package com.dingding.manager.modules.system.service;

import java.util.List;

import com.dingding.manager.common.beans.sys.SysRole;
import com.dingding.manager.common.beans.sys.SysRoleMenu;
import com.dingding.manager.common.dao.Page;
import com.dingding.manager.modules.system.dto.role.ReqAddRoleDTO;
import com.dingding.manager.modules.system.dto.role.ReqRoleListDTO;
import com.dingding.manager.modules.system.dto.role.ResRoleDTO;

/**
 * 
* @ClassName: RoleService 
* @Description: 角色管理service
* @author SUNZHICHENG 
* @date 2016年12月1日 下午1:57:36 
* @version V2.6.2
 */

public interface RoleService {
	
	/**
	 * @Description: 根据角色id查询角色信息        
	 * @date 2016年12月1日 下午2:40:57
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public ResRoleDTO getRoleById(Integer roleId);
	
	/**
	 * @Description: 根据用户名查询角色信息
	 * @param name   用户名    
	 * @date 2016年12月2日 下午10:44:29
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<SysRole> getRoleByName(String name);
	
	/**
	 * 
	 * @Description: 查询所有角色列表        
	 * @date 2016年12月5日 下午1:56:23
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<SysRole> getRoleList();
	
	/**
	 * @Description: 查询所有的角色列表或按照条件查询角色列表    
	 * @date 2016年12月1日 下午2:43:02
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public Page<ResRoleDTO> getRoleList(ReqRoleListDTO reqRoleListDTO,Integer start, Integer length);
	
	
	/**
	 * @Description: 保存角色信息（新建角色）
	 * @date 2016年12月1日 下午2:45:13
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public void addRole(ReqAddRoleDTO reqAddRoleDTO);
	
	/**
	 * @Description: 修改角色信息
	 * @date 2016年12月1日 下午2:48:02
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public void modifyRole(ReqAddRoleDTO reqAddRoleDTO,Integer sysRoleId);
	
	/**
	 * @Description: 删除角色
	 * @param roleId  角色id      
	 * @date 2016年12月1日 下午2:54:03
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean deleteRole(Integer roleId);
	
	
	/**
	 * @Description: 修改角色是否可用状态        
	 * @date 2016年12月1日 下午2:49:25
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public boolean modifyRoleState(Integer roleId,Integer state);
	
	/**
	 * @Description: 给角色授权（访问菜单的权限）
	 * @date 2016年12月9日 上午10:37:58
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public boolean accreditToRole( Integer sysRoleId,  List<Integer> sysMenuIds );
	
	/**
	 * @Description: 获取已授权列表
	 * @date 2016年12月9日 下午1:33:56
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public List<SysRoleMenu> getAccreditList(Integer sysRoleId);
}
